home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.006 / xemacs-1 / lib / xemacs-19.13 / info / hyperbole.info-3 < prev    next >
Encoding:
GNU Info File  |  1995-09-01  |  33.1 KB  |  787 lines

  1. This is Info file ../info/hyperbole.info, produced by Makeinfo-1.63
  2. from the input file hyperbole.texi.
  3.  
  4. 
  5. File: hyperbole.info,  Node: Embedding Hyperbole,  Prev: Encapsulating Systems,  Up: Developing with Hyperbole
  6.  
  7. Embedding Hyperbole
  8. ===================
  9.  
  10.    [NOTE: We have never done this ourselves, though we have done similar
  11. things which leads us to infer that the task should not be difficult.]
  12.  
  13.    The standard Emacs-based Hyperbole user interface has purposely been
  14. separated from the Hyperbole backend to support the development of
  15. alternative interfaces and the embedding of Hyperbole functionality
  16. within other system prototypes.  The Hyperbole backend functionality
  17. that system developers can make use of is called its Application
  18. Programming Interface (API).  The API may be used to make server-based
  19. calls to Hyperbole when Emacs is run as a non-interactive (batch)
  20. process, with its input/output streams attached to another process.
  21.  
  22.    The public functions and variables from the following files may be
  23. considered the present Hyperbole API:
  24.  
  25. `hact.el', `hargs.el', `hbmap.el', `hbut.el', `hhist.el', `hmail.el',
  26. `hmoccur.el', `hpath.el', `htz.el', `hypb.el', `set.el', `wconfig.el',
  27. `wrolo.el', and `wrolo-logic.el'.
  28.  
  29. (Note that within a class definition, functions and variables that
  30. follow a line of dashes are private.)
  31.  
  32. 
  33. File: hyperbole.info,  Node: Glossary,  Next: Smart Key Reference,  Prev: Developing with Hyperbole,  Up: Top
  34.  
  35. Glossary
  36. ********
  37.  
  38.    Concepts pertinent to operational usage of Hyperbole are defined
  39. here.  If some GNU Emacs terms are unfamiliar to you, see *Note Emacs
  40. Glossary: (emacs)Glossary.
  41.  
  42. `action'
  43.      An executable behavior associated with a Hyperbole button.  A
  44.      specific class of actions which display entities are called
  45.      *links*, such as a link to a file.
  46.  
  47. `Action Key'
  48.      See *Smart Key*.
  49.  
  50. `action type'
  51.      A behavioral specification for use within Hyperbole buttons.
  52.      Action types usually contain a set of parameters which must be
  53.      given values for each button with which they are associated.  An
  54.      action type together with a set of values, called arguments, may
  55.      be considered an *action*.  *Actype* is a synonym for action type.
  56.  
  57. `activation'
  58.      Request for a Hyperbole button to perform its action.  Ordinarily
  59.      the user presses a key which selects and activates a button.
  60.  
  61. `ange-ftp'
  62.      A standard GNU Emacs Lisp package which allows one to use pathnames
  63.      that are accessible via the Internet File Transfer Protocol (ftp)
  64.      just like other pathnames, for example when finding a file.  The
  65.      latest version of ange-ftp may always be obtained via anonymous
  66.      ftp to: `/ftp.gnu.ai.mit.edu:ange-ftp/ange-ftp.tar.gz'.
  67.  
  68. `argument'
  69.      A button-specific value fed to a Hyperbole type specification when
  70.      the button is activated.
  71.  
  72. `Assist Key'
  73.      See *Smart Key*.
  74.  
  75. `attributes'
  76.      Slot names associated with Hyperbole buttons.  An *attribute value*
  77.      is associated with each button attribute.
  78.  
  79. `button'
  80.      A selectable Hyperbole construct which performs an action.  A
  81.      button consists of a set of attributes that includes: a textual
  82.      label, a category, a type and zero or more arguments.  *Explicit
  83.      buttons* also have creator, create time, last modifier, and last
  84.      modifier time attributes.
  85.  
  86.      Buttons provide the user's gateway to information.  The user sees
  87.      and interacts with button labels, the rest of the button data is
  88.      managed invisibly by Hyperbole and displayed only in response to
  89.      user queries.
  90.  
  91. `button activation'
  92.      See *activation*.
  93.  
  94. `button attributes'
  95.      See *attributes*.
  96.  
  97. `button data'
  98.      Lists of button attribute values explicitly saved and managed by
  99.      Hyperbole.  One list for each button created by Hyperbole.
  100.  
  101. `button file, local'
  102.      A per-directory file named `HYPB' that may be used to store any
  103.      desired buttons and may then be displayed via a menu selection
  104.      whenever a user is within that directory.
  105.  
  106. `button file, personal'
  107.      A per-user file named `HYPB' that may be used to store any desired
  108.      buttons and may then be displayed via a menu selection.
  109.  
  110. `button key'
  111.      A normalized form of a *button label* used internally by Hyperbole.
  112.  
  113. `button label'
  114.      A text string that visually indicates a Hyperbole button location
  115.      and provides it with a name and unique identifier.  Within a
  116.      buffer, buttons with the same label are considered separate views
  117.      of the same button and so behave exactly alike.  Since button
  118.      labels are simply text strings, they may be embedded within any
  119.      text to provide non-linear information or operational access
  120.      points.
  121.  
  122.      The maximum length of a button label is limited by the variable
  123.      EBUT:MAX-LEN.
  124.  
  125. `button selection'
  126.      The act of designating a Hyperbole button upon which to operate.
  127.      Use the Action Key to select a button.
  128.  
  129. `category'
  130.      A high-level, conceptual grouping of Hyperbole buttons into
  131.      classes.  *Implicit* and *explicit* groupings represent categories.
  132.  
  133. `class'
  134.      A group of functions and variables with the same prefix in their
  135.      names, used to provide an interface to an internal or external
  136.      Hyperbole abstraction.
  137.  
  138. `context'
  139.      A programmatic or positional state recognized by Hyperbole.  We
  140.      speak of Smart Key and implicit button contexts.  Both are
  141.      typically defined in terms of surrounding patterns within a
  142.      buffer, but may be defined by arbitrary Emacs Lisp predicates.
  143.      (Context may come to have a broader meaning within future versions
  144.      of Hyperbole.)
  145.  
  146. `environment'
  147.      See *Hyperbole environment*.
  148.  
  149. `efs'
  150.      The much larger successor to ange-ftp.  It does the same thing as
  151.      ange-ftp but works with more types of ftp hosts.  See *ange-ftp*.
  152.  
  153. `explicit button'
  154.      A button created and managed by Hyperbole.  By default, explicit
  155.      buttons are delimited like this `<(fake button)>'.  Direct
  156.      selection is used to operate upon an explicit button.
  157.  
  158. `global button'
  159.      A form of explicit button which is typically accessed by name
  160.      rather than direct selection.  Global buttons are useful when one
  161.      wants quick access to actions such as jumping to common file
  162.      locations or for performing sequences of operations.  One need not
  163.      locate them since they are always available by name, with full
  164.      completion offered.  All global buttons are stored in the file
  165.      given by the variable GBUT:FILE and may be activated as regular
  166.      explicit buttons by visiting this file.  By default, this is the
  167.      same as the user's personal button file.
  168.  
  169. `global button file'
  170.      See *button file, personal*.
  171.  
  172. `hook variable'
  173.      A variable that permits customization of an existing function's
  174.      operation without the need to edit the function's code.  See also
  175.      the documentation for the function `(run-hooks)'.
  176.  
  177. `Hyperbole'
  178.      A flexible, programmable information management and viewing system
  179.      built on top of GNU Emacs.  It utilizes a button-action model and
  180.      supports hypertextual linkages.  Hyperbole is all things to all
  181.      people.
  182.  
  183. `Hyperbole environment'
  184.      A programmatic context within which Hyperbole operates.  This
  185.      includes the set of Hyperbole types defined and the set of
  186.      Hyperbole code modules loaded.  It does not include the set of
  187.      accessible buttons.  Although the entire Emacs environment is
  188.      available to Hyperbole, we do not speak of this as part of the
  189.      Hyperbole environment.
  190.  
  191. `hypertext'
  192.      A text or group of texts which may be explored in a non-linear
  193.      fashion through associative linkages embedded throughout the text.
  194.      Instead of simply referring to other pieces of work, hypertext
  195.      references when followed actually take you to the works themselves.
  196.  
  197. `implicit button'
  198.      A button recognized contextually by Hyperbole.  Such buttons
  199.      contain no button data.  See also *implicit button type*.
  200.  
  201. `implicit button type'
  202.      A specification of how to recognize and activate implicit buttons
  203.      of a specific kind.  Implicit button types often utilize structure
  204.      internal to documents created and managed without Hyperbole
  205.      assistance, for example, programming documentation.  *Ibtype* is a
  206.      synonym for implicit button type.  See also *system encapsulation*.
  207.  
  208. `instance number'
  209.      A colon prefaced number appended to the label of a newly created
  210.      button when the button's label duplicates the label of an existing
  211.      button in the current buffer.  This number makes the label unique
  212.      and so allows any number of buttons with the same base label
  213.      within a single buffer.
  214.  
  215. `link'
  216.      A reference from a Hyperbole button to an entity.  The referenced
  217.      entity is sometimes called a *node* or *referent*.  A specific
  218.      class of actions which display entities are called *links*, such
  219.      as a link to a file.
  220.  
  221. `local button file'
  222.      See *button file, local*.
  223.  
  224. `mouse button'
  225. `mouse key'
  226.      See *Smart Key*.
  227.  
  228. `node'
  229.      See *link*.
  230.  
  231. `predicate'
  232.      A boolean (nil = false, non-nil = true) Lisp expression typically
  233.      evaluated as part of a conditional expression.
  234.  
  235. `referent'
  236.      See *link*.
  237.  
  238. `Smart Key'
  239.      A context-sensitive key used within Hyperbole and beyond.
  240.      Actually, there are two Smart Keys, the Action Key and the Assist
  241.      Key.  The Action Key, typically bound to the shift-middle mouse
  242.      key (or shift-left mouse key on a 2-button mouse), activates
  243.      Hyperbole buttons and scrolls the buffer forward a windowful when
  244.      pressed at the end of a line.  The Assist Key, typically bound to
  245.      the shift-right mouse key, explains what a Hyperbole button does
  246.      or scrolls the buffer backward a windowful when pressed at the end
  247.      of a line.
  248.  
  249.      To see what a Smart Key will do within a particular context,
  250.      depress and hold the key at the point desired and depress the
  251.      other Smart Key.  A buffer containing a description of its
  252.      contextual function will then be displayed.  You may release the
  253.      two keys in any order after you have them both depressed.  A press
  254.      of the Assist Key in an unsupported context displays a summary of
  255.      Smart Key functions in each context, as does the Doc/SmartKy menu
  256.      item.
  257.  
  258. `source buffer / file'
  259.      The buffer or file within which a Hyperbole button is embedded.
  260.  
  261. `system encapsulation'
  262.      Use of Hyperbole to provide an improved or simply consistent user
  263.      interface to another system.  Typically, implicit button types are
  264.      defined to recognize and activate button-type constructs managed
  265.      by the other system.
  266.  
  267. `view'
  268.      A perspective on some information.  A view can affect the extent
  269.      of the information displayed, its format, modes used to operate on
  270.      it, its display location and so forth.
  271.  
  272. `view spec'
  273.      A terse (and to the uninitiated, cryptic) string that specifies a
  274.      particular view of a link referent or some other information.
  275.  
  276. 
  277. File: hyperbole.info,  Node: Smart Key Reference,  Next: Outliner Keys,  Prev: Glossary,  Up: Top
  278.  
  279. Smart Key Reference
  280. *******************
  281.  
  282.    This appendix supplies complete documentation on Smart Key
  283. operation.  It is quite extensive and is meant for reference rather
  284. than sequential reading.  *Note Smart Keys::, for a description of the
  285. Smart Keys.  That section also describes how to get context-sensitive
  286. Smart Key help, with which you can explore Smart Key operation bit by
  287. bit.
  288.  
  289.    Smart Key operations are context-sensitive.  Contexts are described
  290. herein as conditionals, e.g. when depressed here, if this is true, etc.
  291. Each Smart Key context is listed in the order in which it will be
  292. checked.  The first matching context is always the one applied.  Within
  293. each context, the actions performed by the Action and Assist Keys are
  294. listed.
  295.  
  296. * Menu:
  297.  
  298. * Smart Mouse Keys::
  299. * Smart Keyboard Keys::
  300.  
  301. 
  302. File: hyperbole.info,  Node: Smart Mouse Keys,  Next: Smart Keyboard Keys,  Prev: Smart Key Reference,  Up: Smart Key Reference
  303.  
  304. Smart Mouse Keys
  305. ================
  306.  
  307.    Smart Key drags and modeline presses can only be used when running
  308. under a window system with mouse key support.  So keep in mind that the
  309. operations in this section apply only if you have mouse support within
  310. Hyperbole.  The Smart Key operations in, *Note Smart Keyboard Keys::,
  311. apply to both mouse and keyboard Smart Key usage.
  312.  
  313. If dragged from a side-by-side window edge or from the immediate left of
  314. a vertical scroll bar:
  315.   ACTION or ASSIST
  316.      Resizes adjacent window sides to the point of drag release.
  317.  
  318. If dragged from inside one window to another:
  319.   ACTION
  320.      Creates a new link button at the drag start location, linked to the
  321.      drag end location.  If drag start position is within a button,
  322.      modifies the button to link to drag end location.
  323.   ASSIST
  324.      Swaps buffers in the two windows.
  325.  
  326. If dragged horizontally within a single window while depressed
  327. (hmouse-x-drag-sensitivity sets the minimal horizontal movement which
  328. registers a drag):
  329.   ACTION
  330.      Goes to buffer end if drag was to the right, otherwise goes to beginning.
  331.   ASSIST
  332.      Splits window vertically if drag was to the right, otherwise deletes
  333.      window.
  334.  
  335. If depressed within a window mode line:
  336.   ACTION
  337.      (1) clicked on left edge of a window's modeline,
  338.          window's buffer is buried (placed at bottom of buffer list);
  339.      (2) clicked on right edge of a window's modeline,
  340.          the Info buffer is displayed, or if already displayed and the
  341.          modeline clicked belongs to a window displaying Info, the Info
  342.          buffer is hidden;
  343.      (3) clicked anywhere in the middle of a window's modeline,
  344.      the functions listed in 'assist-key-modeline-hook' are
  345.          called;
  346.      (4) dragged vertically from modeline to within a window,
  347.          the modeline is moved to point of key release, thereby resizing
  348.          its window and potentially its vertical neighbors.
  349.   ASSIST
  350.      (1) clicked on left edge of a window's modeline,
  351.          bottom buffer in buffer list is unburied and placed in window;
  352.      (2) clicked on right edge of a window's modeline,
  353.          the summary of Smart Key behavior is displayed, or if already
  354.          displayed and the modeline clicked belongs to a window displaying
  355.          the summary, the summary buffer is hidden;
  356.      (3) clicked anywhere in the middle of a window's modeline,
  357.          a popup menu (if available) is displayed;
  358.      (4) dragged vertically from modeline to within a window,
  359.          the modeline is moved to point of key release, thereby resizing
  360.          its window and potentially its vertical neighbors.
  361.  
  362. If dragged vertically within a single window while depressed
  363. (hmouse-y-drag-sensitivity sets the minimal vertical movement which
  364. registers a drag):
  365.   ACTION or ASSIST
  366.      Splits current window into two side-by-side windows.
  367.  
  368. If dragged diagonally within a single window while depressed
  369. (hmouse-x-diagonal-sensitivity and hmouse-y-diagonal-sensitivity set the
  370. minimal diagonal movement which registers a drag):
  371.   ACTION
  372.      Save current window configuration onto a ring of window configurations.
  373.   ASSIST
  374.      Restores prior window configuration from ring.  A prefix argument N
  375.      specifies the Nth prior configuration from the ring.
  376.  
  377. 
  378. File: hyperbole.info,  Node: Smart Keyboard Keys,  Prev: Smart Mouse Keys,  Up: Smart Key Reference
  379.  
  380. Smart Keyboard Keys
  381. ===================
  382.  
  383. When prompting for a Hyperbole argument, a press in the minibuffer:
  384.   ACTION
  385.      Terminates this minibuffer argument.
  386.   ASSIST
  387.      Offers completion help for current minibuffer argument.
  388.  
  389. When reading a Hyperbole menu item or a Hyperbole completion-based argument:
  390.   ACTION
  391.      Returns value selected at point if any, else nil.  If
  392.      value is the same as the contents of the minibuffer, it is used as the
  393.      current minibuffer argument, otherwise, the minibuffer is erased and
  394.      value is inserted there.
  395.  
  396.   ASSIST
  397.      Displays Hyperbole menu item help when item is selected.
  398.  
  399. When pressed at the end of a line but not the end of a buffer:
  400.   ACTION
  401.      Scrolls up according to value of smart-scroll-proportional.  If
  402.      smart-scroll-proportional is nil (the default) or if point is on the top
  403.      window line, scrolls up (forward) a windowful.  Otherwise, tries to
  404.      bring current line to top of window.  Leaves point at end of line and
  405.      returns t if scrolled, nil if not.
  406.   ASSIST
  407.      Scrolls down according to value of smart-scroll-proportional.  If
  408.      smart-scroll-proportional is nil (the default) or if point is on the
  409.      bottom window line, scrolls down (backward) a windowful.  Otherwise,
  410.      tries to bring current line to bottom of window.  Leaves point at end of
  411.      line and returns t if scrolled, nil if not.
  412.  
  413. When pressed on a Hyperbole button:
  414.   ACTION
  415.      Activates button.
  416.   ASSIST
  417.      Displays help for button, typically a summary of its attributes.
  418.  
  419. If pressed within a buffer in View major or minor mode:
  420.   ACTION
  421.      Scrolls buffer forward a windowful and quits from view mode when at
  422.      the last line of the buffer.
  423.   ASSIST
  424.      Scrolls buffer backward a windowful.
  425.  
  426. When pressed within a Hyperbole outliner buffer (kotl-mode):
  427.   ACTION
  428.      (1) at the end of buffer, uncollapse and unhide all cells in view;
  429.      (2) within a cell, if its subtree is hidden then show it,
  430.          otherwise hide it;
  431.      (3) between cells or within the read-only indentation region to the
  432.          left of a cell, then move point to prior location and begin
  433.      creation of a klink to some other outline cell; hit the Action
  434.      Key twice to select the link referent cell;
  435.      (4) anywhere else, scroll up a windowful.
  436.   ASSIST
  437.      (1) at the end of buffer, collapse all cells and hide all non-level-one
  438.          cells;
  439.      (2) on a header line but not at the beginning or end, display
  440.          properties of each cell in kotl beginning at point;
  441.      (3) between cells or within the read-only indentation region to the
  442.          left of a cell, then move point to prior location and prompt to
  443.          move one tree to a new location in the outline; hit the Action
  444.          Key twice to select the tree to move and where to move it;
  445.      (4) anywhere else, scroll down a windowful.
  446.  
  447. When pressed on a Smart Menu item:
  448.   ACTION
  449.     Activates item.
  450.   ASSIST
  451.     Displays help for item.
  452.  
  453. When pressed at the end of a Help buffer:
  454.   ACTION or ASSIST
  455.     Restores window configuration prior to help display.
  456.  
  457. When pressed within an OO-Browser listing window:
  458.   ACTION
  459.      (1) in a blank buffer or at the end of a buffer, browser help
  460.          information is displayed in the viewer window;
  461.      (2) at the beginning of a (non-single char) class name, the class'
  462.          ancestors are listed;
  463.      (3) at the end of an entry line, scrolls listing up;
  464.      (4) on the '...', following a class name, point is moved to the class
  465.          descendency expansion;
  466.      (5) before an element name, the implementor classes of the name are
  467.          listed;
  468.      (6) anywhere else on an entry line, the source is displayed for editing.
  469.   ASSIST
  470.      (1) in a blank buffer, a selection list of buffer files is displayed;
  471.      (2) at the beginning of a (non-single char) entry, the class'
  472.          descendants are listed;
  473.      (3) at the end of an entry line, scrolls listing down;
  474.      (4) on the '...', following a class name, point is moved to the class
  475.          expansion;
  476.      (5) anywhere else on a class entry line, lists the class' elements;
  477.      (6) anywhere else on an element line, lists the element's implementor
  478.          classes;
  479.      (7) on a blank line following all entries, the current listing buffer
  480.          is exited.
  481.  
  482. When pressed within an OO-Browser Command Help Menu buffer:
  483.   ACTION
  484.      Executes an OO-Browser command whose key binding is at point.
  485.   ASSIST
  486.      Displays help for an OO-Browser command whose key binding is at point.
  487.  
  488. When pressed on an identifier within an OO-Browser source file:
  489.   ACTION
  490.      Tries to display identifier definition.
  491.   ASSIST
  492.      Not applicable.
  493.  
  494. When pressed within a C source code file:
  495.   ACTION
  496.      Jumps to the definition of selected C construct:
  497.      (1) on a '#include' statement, the include file is displayed;
  498.          Look for include file in directory lists
  499.          'smart-c-cpp-include-dirs' and 'smart-c-include-dirs'.
  500.      (2) on a C identifier, the identifier definition is displayed,
  501.          assuming the identifier is found within an 'etags' generated tag file
  502.          in the current directory or any of its ancestor directories.
  503.      (3) if 'smart-c-use-lib-man' is non-nil, the C identifier is
  504.          recognized as a library symbol, and a man page is found for the
  505.          identifier, then the man page is displayed.
  506.   ASSIST
  507.      Jumps to the next tag matching an identifier at point.
  508.  
  509. When pressed within an assembly source code file:
  510.   ACTION
  511.      Jumps to the definition of selected assembly construct:
  512.      (1) on an include statement, the include file is displayed;
  513.          Look for include file in directory list
  514.          'smart-asm-include-dirs'.
  515.      (2) on an identifier, the identifier definition is displayed,
  516.          assuming the identifier is found within an 'etags' generated
  517.      tag file in the current directory or any of its ancestor
  518.      directories.
  519.   ASSIST
  520.      Jumps to the next tag matching an identifier at point.
  521.  
  522. When pressed within a C++ source code file:
  523.   ACTION
  524.      Jumps to the definition of selected C+ construct:
  525.      (1) on a '#include' statement, the include file is displayed;
  526.          Look for include file in directory lists
  527.          'smart-c-cpp-include-dirs' and 'smart-c-include-dirs'.
  528.      (2) on a C++ identifier, the identifier definition is displayed,
  529.          assuming the identifier is found within an 'etags' generated tag file
  530.          in the current directory or any of its ancestor directories.
  531.      (3) if 'smart-c-use-lib-man' is non-nil, the C++ identifier is
  532.          recognized as a library symbol, and a man page is found for the
  533.          identifier, then the man page is displayed.
  534.   ASSIST
  535.      Jumps to the next tag matching an identifier at point.
  536.  
  537. When pressed within a Objective-C source code file:
  538.   ACTION
  539.      Jumps to the definition of selected C+ construct:
  540.      (1) on a '#include' statement, the include file is displayed;
  541.          Look for include file in directory lists
  542.          'smart-c-cpp-include-dirs' and 'smart-c-include-dirs'.
  543.      (2) on an Objective-C identifier, the identifier definition is displayed,
  544.          assuming the identifier is found within an 'etags' generated tag file
  545.          in the current directory or any of its ancestor directories.
  546.      (3) if 'smart-c-use-lib-man' is non-nil, the Objective-C identifier is
  547.          recognized as a library symbol, and a man page is found for the
  548.          identifier, then the man page is displayed.
  549.   ASSIST
  550.      Jumps to the next tag matching an identifier at point.
  551.  
  552. When pressed on a Lisp symbol within a Lisp code buffer:
  553.   ACTION
  554.      Jumps to the definition of any selected Lisp construct.
  555.      If on an Emacs Lisp require, load, or autoload clause and 'find-library'
  556.      from load-library package by Hallvard Furuseth <hallvard@ifi.uio.no> has
  557.      been loaded, jumps to library source, if possible.
  558.   ASSIST
  559.      Jumps to the next tag matching an identifier at point or if using the
  560.      "wtags" package and identifier is an Emacs Lisp symbol, then displays
  561.      documentation for the symbol.
  562.  
  563. When the OO-Browser has been loaded and the press is within a C++ buffer:
  564.   ACTION or ASSIST
  565.      Jumps to the definition of selected C++ construct via OO-Browser support.
  566.      (1) on a '#include' statement, the include file is displayed;
  567.          Look for include file in directory lists
  568.          'smart-c-cpp-include-dirs' and 'smart-c-include-dirs'.
  569.      (2) within a method declaration, its definition is displayed;
  570.      (3) on a class name, the class definition is shown.
  571.  
  572. When the OO-Browser has been loaded and the press is within a
  573. Objective-C buffer:
  574.   ACTION or ASSIST
  575.      Jumps to the definition of selected Objective-C construct via
  576.      OO-Browser support.
  577.      (1) on a '#include' statement, the include file is displayed;
  578.          Look for include file in directory lists
  579.          'smart-c-cpp-include-dirs' and 'smart-c-include-dirs'.
  580.      (2) within a method declaration, its definition is displayed;
  581.      (3) on a class name, the class definition is shown.
  582.  
  583. When pressed within an occur-mode or moccur-mode buffer:
  584.   ACTION or ASSIST
  585.      Jumps to the source buffer and line of the current occurrence.
  586.  
  587. When pressed within a calendar-mode buffer:
  588.   ACTION
  589.      (1) at the end of the buffer, the calendar is scrolled forward 3 months;
  590.      (2) to the left of any dates on a calendar line, the calendar is scrolled
  591.          backward 3 months;
  592.      (3) on a date, the diary entries for the date, if any, are displayed.
  593.   ASSIST
  594.      (1) at the end of the buffer, the calendar is scrolled backward 3 months;
  595.      (2) to the left of any dates on a calendar line, the calendar is scrolled
  596.          forward 3 months;
  597.      (3) anywhere else, all dates with marking diary entries are marked in the
  598.          calendar window.
  599.  
  600. When pressed within a man page apropos buffer:
  601.   ACTION
  602.      (1) on a UNIX man apropos entry, the man page for that entry is
  603.          displayed in another window;
  604.      (2) on or after the last line, the buffer in the other window is
  605.          scrolled up a windowful.
  606.   ASSIST
  607.      (1) on a UNIX man apropos entry, the man page for that entry is
  608.          displayed in another window;
  609.      (2) on or after the last line, the buffer in the other window is
  610.          scrolled down a windowful.
  611.  
  612. If Smart Menu package has been loaded and 'hkey-always-display-menu' is
  613. non-nil:
  614.   ACTION or ASSIST
  615.      Pops up a window with a Smart Menu of commands.
  616.      Menu displayed is selected by (smart-menu-choose-menu).
  617.  
  618. If pressed within an outline-mode buffer or when 'selective-display' is
  619. non-nil:
  620.   ACTION
  621.      Collapses, expands, and moves outline entries.
  622.      (1) after an outline heading has been cut via the Action Key, then paste
  623.          the cut heading at point;
  624.      (2) at the end of buffer, show all buffer text
  625.      (3) at the beginning of a heading line, cut the headings subtree from the
  626.          buffer;
  627.      (4) on a header line but not at the beginning or end, if headings
  628.          subtree is hidden then show it, otherwise hide it;
  629.      (5) anywhere else, scroll up a windowful.
  630.   ASSIST
  631.      (1) after an outline heading has been cut via the Action Key, allow
  632.          multiple pastes throughout the buffer (last paste should be done
  633.          with the Action Key, not the Assist Key);
  634.      (2) at the end of buffer, hide all bodies in buffer;
  635.      (3) at the beginning of a heading line, cut the current heading (sans
  636.          subtree) from the buffer;
  637.      (4) on a header line but not at the beginning or end, if heading body is
  638.          hidden then show it, otherwise hide it;
  639.      (5) anywhere else, scroll down a windowful.
  640.  
  641. If pressed within an Info manual node:
  642.   ACTION
  643.      (1) the first line of an Info Menu Entry or Cross Reference, the desired
  644.          node is found;
  645.      (2) the Up,Next,or Previous entries of a Node Header (first line),
  646.          the desired node is found;
  647.      (3) the File entry of a Node Header (first line),
  648.          the 'Top' node within that file is found;
  649.      (4) at the end of the current node, the Next node is found (this will
  650.          descend subtrees if the function 'Info-global-next' is bound);
  651.      (5) anywhere else (e.g. at the end of a line), the current node entry is
  652.          scrolled up a windowful.
  653.   ASSIST
  654.      (1) the first line of an Info Menu Entry or Cross Reference, the desired
  655.          node is found;
  656.      (2) the Up,Next,or Previous entries of a Node Header (first line),
  657.          the last node in the history list is found;
  658.      (3) the File entry of a Node Header (first line),
  659.          the 'DIR' root-level node is found;
  660.      (4) at the end of the current node, the Previous node is found (this will
  661.          return from subtrees if the function 'Info-global-prev is bound);
  662.      (5) anywhere else (e.g. at the end of a line), the current node entry is
  663.          scrolled down a windowful.
  664.  
  665. If pressed within a Hyperbole-supported mail reader, 'hmail:reader', or mail
  666. summary mode, 'hmail:lister', buffer at:
  667.   ACTION
  668.      (1) a msg buffer, within the first line or at the end of a message,
  669.          the next undeleted message is displayed;
  670.      (2) a msg buffer within the first line of an Info cross reference, the
  671.          reference is followed;
  672.      (3) anywhere else in a msg buffer, the window is scrolled up one
  673.      windowful;
  674.      (4) a msg summary buffer on a header entry, the message corresponding to
  675.          the header is displayed in the msg window;
  676.      (5) a msg summary buffer, on or after the last line, the messages marked
  677.          for deletion are expunged.
  678.   ASSIST
  679.      (1) a msg buffer, within the first line or at the end of a message,
  680.          the previous undeleted message is displayed;
  681.      (2) a msg buffer within the first line of an Info cross reference, the
  682.          reference is followed;
  683.      (3) anywhere else in a msg buffer, the window is scrolled down one
  684.          windowful;
  685.      (4) a msg summary buffer on a header entry, the message corresponding to
  686.          the header is marked as deleted;
  687.      (5) a msg summary buffer, on or after the last line, all messages are
  688.          marked undeleted.
  689.  
  690. If pressed within a GNUS listing of newsgroups buffer at:
  691.   ACTION
  692.      (1) a GNUS-GROUP line, that newsgroup is read;
  693.      (2) to the left of any GNUS-GROUP line, on any of the whitespace, the
  694.          current group is unsubscribed or resubscribed;
  695.      (3) at the end of the GNUS-GROUP buffer, after all lines, checks for new
  696.          news.
  697.   ASSIST
  698.      (1) a GNUS-GROUP line, that newsgroup is read;
  699.      (2) to the left of any GNUS-GROUP line, on any of the whitespace, the
  700.          user is prompted for a group name to subscribe or unsubscribe to;
  701.      (3) at the end of the GNUS-GROUP buffer, after all lines, quits from the
  702.          newsreader.
  703.  
  704. If pressed within a GNUS newsreader subject listing buffer at:
  705.   ACTION
  706.      (1) a GNUS-SUBJECT line, that article is read, marked deleted, and
  707.          scrolled forward;
  708.      (2) at the end of the GNUS-SUBJECT buffer, the next undeleted article
  709.          is read or the next group is entered.
  710.   ASSIST
  711.      (1) a GNUS-SUBJECT line, that article is read and scrolled backward;
  712.      (2) at the end of the GNUS-SUBJECT buffer, the subject is exited, the
  713.          user is returned to group mode.
  714.  
  715. If pressed within a GNUS newsreader article buffer at:
  716.   ACTION
  717.      (1) the first line or end of an article, the next unread message is
  718.          displayed;
  719.      (2) the first line of an Info cross reference, the reference is followed;
  720.      (3) anywhere else, the window is scrolled up a windowful.
  721.   ASSIST
  722.      (1) the first line or end of an article, the previous message is
  723.          displayed;
  724.      (2) the first line of an Info cross reference, the reference is followed;
  725.      (3) anywhere else, the window is scrolled down a windowful.
  726.  
  727. If pressed within a listing of buffers (Buffer-menu-mode):
  728.   ACTION
  729.      (1) on the first column of an entry, the selected buffer is marked for
  730.          display;
  731.      (2) on the second column of an entry, the selected buffer is marked to be
  732.          saved;
  733.      (3) anywhere else within an entry line, all saves and deletes are done,
  734.          and selected buffers are displayed, including the one just clicked
  735.          on (if in the OO-Browser, only the selected buffer is displayed);
  736.      (4) on or after the last line in the buffer, all saves and deletes are
  737.          done.
  738.   ASSIST
  739.      (1) on the first or second column of an entry, the selected buffer is
  740.          unmarked for display and for saving or deletion;
  741.      (2) anywhere else within an entry line, the selected buffer is marked for
  742.          deletion;
  743.      (3) on or after the last line in the buffer, all display, save, and delete
  744.          marks on all entries are undone.
  745.  
  746. If pressed within a dired-mode buffer:
  747.   ACTION
  748.      (1) within an entry line, the selected file/directory is displayed
  749.          for editing in the other window;
  750.      (2) on or after the last line in the buffer, if any deletes are to be
  751.          performed, they are executed after user verification, otherwise, this
  752.          dired invocation is quit.
  753.   ASSIST
  754.      (1) on a '~' character, all backup files in the directory are marked for
  755.          deletion;
  756.      (2) on a '#' character, all auto-save files in the directory are marked
  757.          for deletion;
  758.      (3) anywhere else within an entry line, the current entry is marked for
  759.          deletion;
  760.      (4) on or after the last line in the buffer, all delete marks on all
  761.          entries are undone.
  762.  
  763. If pressed within a tar-mode buffer:
  764.   ACTION
  765.      (1) within an entry line, the selected file/directory is displayed
  766.          for editing in the other window;
  767.      (2) on or after the last line in the buffer, if any deletes are to be
  768.          performed, they are executed after user verification, otherwise, this
  769.          tar file browser is quit.
  770.   ASSIST
  771.      (1) on an entry line, the current entry is marked for deletion;
  772.      (2) on or after the last line in the buffer, all delete marks on all
  773.          entries are undone.
  774.  
  775. If pressed on a cross reference within a man page entry section labeled
  776. NAME, SEE ALSO, or PACKAGES USED, or within a man page C routine
  777. specification (see 'smart-man-c-routine-ref') and man page buffer
  778. has either an attached file or else a MAN-PATH local variable
  779. containing its pathname:
  780.   ACTION or ASSIST
  781.      Displays man page or source code for cross reference.
  782.  
  783. If pressed within an entry in the wrolo match display buffer:
  784.   ACTION or ASSIST
  785.      The entry is edited in the other window.
  786.  
  787.